package com.eatrip.bean;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;


@Entity
@Table(name = "prodotti_tipici")
public class ProdottoTipico implements Serializable{
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -1309619512858354505L;
	
	@Id
	@Column(name = "id_prodotto")
	@GeneratedValue
	private int idProdotto;
	
	@OneToOne
	@JoinColumn(name = "id_provincia_fk")
	private Provincia provincia;
	
	// DAAAAAAAA     CONNNNNNNTRRRRRRRRROOOOOOOOOOOLLLLLLLLLLLLLAAAAAAAAAAAREEEEEEEEEEEEEEEEEEE
	@ManyToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
	@JoinTable(name = "comune_prodotti_tipici", 
			   joinColumns = @JoinColumn(name = "id_prodotto_fk") , 
			   inverseJoinColumns = { @JoinColumn(name = "id_comune_fk") }
	)
	private Set<Comune> comune = new HashSet<Comune>(0);
	
	@Column(name = "nome_prodotto")
	private String nomeProdotto;
	
	@Column(name = "path_foto")
	private String pathFoto;
	
	@Column(name = "descrizione")
	private String descrizione;

	public int getIdProdotto() {
		return idProdotto;
	}

	public void setIdProdotto(int idProdotto) {
		this.idProdotto = idProdotto;
	}

	
	public Provincia getProvincia() {
		return provincia;
	}

	public void setProvincia(Provincia provincia) {
		this.provincia = provincia;
	}

	public Set<Comune> getComune() {
		return comune;
	}

	public void setComune(Set<Comune> comune) {
		this.comune = comune;
	}

	public String getNomeProdotto() {
		return nomeProdotto;
	}

	public void setNomeProdotto(String nomeProdotto) {
		this.nomeProdotto = nomeProdotto;
	}

	public String getPathFoto() {
		return pathFoto;
	}

	public void setPathFoto(String pathFoto) {
		this.pathFoto = pathFoto;
	}

	public String getDescrizione() {
		return descrizione;
	}

	public void setDescrizione(String descrizione) {
		this.descrizione = descrizione;
	}

	@Override
	public String toString() {
		return "ProdottoTipico [idProdotto=" + idProdotto + ", provincia="
				+ provincia + ", comune=" + comune + ", nomeProdotto="
				+ nomeProdotto + ", pathFoto=" + pathFoto + ", descrizione="
				+ descrizione + "]";
	}

		
	
}
